﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Traceability.App.Application.Dto.Input;
using Traceability.App.Application.Dto.Output;
using Traceability.App.Domain.Model;
using Traceability.App.ErrorCode;

namespace Traceability.App.Application
{
    public interface IService
    {
        /// <summary>
        /// 获取商品名称
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<List<ProductModel>> GetProductShow();
        /// <summary>
        /// 添加产品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddProduct(AddProductInput input);
        /// <summary>
        /// 修改产品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateProduct(UpdateProductInput input);
        /// <summary>
        /// 删除产品
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteProduct(int id);
        /// <summary>
        /// 获取产品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiPaging<ProductOutput> GetTraceabilityShow(PageInput input);
        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<int> Del(string id);
        /// <summary>
        /// 详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<TraceOutput> GetTraceShow(string Batch);
        /// <summary>
        /// 修改养殖信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateCultivation(UpdateCultivationInput input);
        /// <summary>
        /// 获取养殖信息
        /// </summary>
        /// <returns></returns>
        ApiResult<List<CultivationModel>> GetCultivationShow(string batch);

        /// <summary>
        /// 添加保健信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddHealth(HealthInput input);
        /// <summary>
        /// 修改保健信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateHealth(UpdateHealthInput input);
        /// <summary>
        /// 删除保健信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteHealth(int id);
        /// <summary>
        /// 获取保健信息
        /// </summary>
        /// <returns></returns>
        ApiResult<List<HealthModel>> GetHealthShow(string batch);
        /// <summary>
        /// 添加/修改养殖企业信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddCultivation(CultivationInput input);
        /// <summary>
        /// 获取养殖企业信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<List<Cultivation_TableModel>> GetCultivationTableShow(string batch);
        /// <summary>
        /// 添加/修改屠宰信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddSlaughte(SlaughteInput input);
        /// <summary>
        /// 获取屠宰信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<List<SlaughterModel>> GetSlaughteShow(string batch);
        /// <summary>
        /// 添加/修改屠宰企业信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddSlaughterTable (Slaughter_TableInput input);

        /// <summary>
        /// 获取屠宰企业信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<List<Slaughter_TableModel>> GetSlaughterTableShow(string batch);
        /// <summary>
        /// 添加/修改深加工信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddSlaughterhouse(SlaughterhouseInput input);
        /// <summary>
        /// 获取深加工信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<SlaughterhouseOutput> GetSlaughterhouseShow(string batch);

        /// <summary>
        /// 添加/修改深加工企业信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddSlaughterhouseTable(SlaughterhouseTableInput input);
        /// <summary>
        /// 获取深加工信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<SlaughterhouseTableOutput> GetSlaughterhouseTableShow(string batch);
        /// <summary>
        /// 添加/修改供应商信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddSupplier(SupplierInput input);
        /// <summary>
        /// 获取供应商信息
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        ApiResult<List<SupplierOutput>> GetSupplierShow(string batch);
        /// <summary>
        /// 添加图片
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddImg(ImageModel model);
        /// <summary>
        /// 删除图片
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> DelImg(DelImgInput input);
        /// <summary>
        /// 获取图片
        /// </summary>
        /// <returns></returns>
        ApiResult<List<ImageModel>> GetImageShow(ImageOutput output);

    }
}
